﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace QuanLyCongDoanVien.UserControls
{
    public partial class ucThemCongDoanVien : UserControl
    {
        List<ChucVuDTO> lstChucVu = new List<ChucVuDTO>();

        public ucThemCongDoanVien()
        {
            InitializeComponent();
        }

        private void ResetThongTinCDV()
        {
            foreach (Control ctrl in this.Controls)
            {
                if (ctrl.Name.Contains("txt"))
                {
                    ctrl.Text = "";
                }
                if (ctrl.Name == "chkLaDangVien")
                {
                    chkLaDangVien.Checked = false;
                }
                if (ctrl.Name == "chklstChucVu")
                {
                    int numItem = chklstChucVu.Items.Count;
                    for (int i = 0; i < numItem; i++)
                    {
                        chklstChucVu.SetItemChecked(i, false);
                    }
                }
                if (ctrl.Name.Contains("cboNgay"))
                {
                    ctrl.Text = "--Ngày--";
                }
                if (ctrl.Name.Contains("cboThang"))
                {
                    ctrl.Text = "--Tháng--";
                }
            }
            cboDanToc.SelectedIndex = -1;
            cboGioiTinh.SelectedIndex = -1;
            cboChuyenMonNgVu.SelectedIndex = -1;
            cboLyLuanChinhTri.SelectedIndex = -1;
            cboTinhTrang.SelectedIndex = -1;
            cboToCongDoan.SelectedIndex = -1;
            cboTrinhDoVanHoa.SelectedIndex = -1;
            cboTonGiao.SelectedIndex = -1;
        }

        private bool kiemTraLaChuoiSo(string chuoiso)
        {
            int lenth = chuoiso.Length;
            int count = 0;
            string kitu = chuoiso.Substring(count, 1);
            int chuso;
            while (Int32.TryParse(kitu, out chuso) == true)
            {
                kitu = chuoiso.Substring(count, 1);
                count++; 
                if (count == lenth)
                {
                    return true;
                }               
            }
               
            return false;
        }

        private string KiemTraHopLe()
        {
            double hesoluong;
            int ngach;
            string chuoi_loi = "";
            if (txtMaCDV.Text.Trim() == "")
            {
                chuoi_loi += "Phải nhập vào mã công đoàn viên";
            }
            if (txtHoTen.Text.Trim() == "")
            {
                chuoi_loi += "Phải nhập vào họ tên công đoàn viên\n";
            }
            if (double.TryParse(txtHeSoLuong.Text, out hesoluong) == false)
            {
                chuoi_loi += "Hệ số lương phải là số thực\n";
            }
            if (int.TryParse(txtNgach.Text, out ngach) == false)
            {
                chuoi_loi += "Ngạch phải là số nguyên\n";
            }
            if (txtSoDienThoai.Text.Trim() != "" && kiemTraLaChuoiSo(txtSoDienThoai.Text.Trim()) == false)
            {
                chuoi_loi += "số điện thoại phải là chuỗi số\n";
            }
            if (txtSoTheDoanVien.Text.Trim() != "" && kiemTraLaChuoiSo(txtSoTheDoanVien.Text.Trim()) == false)
            {
                chuoi_loi += "số thẻ đoàn viên phải là chuỗi số\n";
            }
            return chuoi_loi;
        }

        private void ThongTinCDV(CongDoanVienDTO CDVienDto, NgayChuyenDenDTO NgayCDenDto, NgayChuyenDiDTO NgayCDiDto)
        {
            CDVienDto.MaCDV = txtMaCDV.Text.Trim();
            CDVienDto.HoTen = txtHoTen.Text.Trim();
            CDVienDto.LaDangVien = chkLaDangVien.Checked;
            CDVienDto.SoDienThoai = txtSoDienThoai.Text.Trim();
            CDVienDto.DiaChi = txtDiaChi.Text.Trim();
            CDVienDto.SoTheDoanVien = txtSoTheDoanVien.Text.Trim();
            CDVienDto.Ngach = Convert.ToInt32(txtNgach.Text.Trim());
            CDVienDto.HeSoLuong = (double)Convert.ToDouble(txtHeSoLuong.Text.Trim());

            if (cboGioiTinh.SelectedIndex != -1)
            {
                CDVienDto.GioiTinh = (string)cboGioiTinh.SelectedItem;
            }
            if (cboLyLuanChinhTri.SelectedIndex != -1)
            {
                CDVienDto.LyLuanChinhTri = (string)cboLyLuanChinhTri.SelectedItem;
            }
            if (cboTrinhDoVanHoa.SelectedIndex != -1)
            {
                CDVienDto.TrinhDoVanHoa = (string)cboTrinhDoVanHoa.SelectedItem;
            }
            if (cboChuyenMonNgVu.SelectedIndex != -1)
            {
                CDVienDto.ChuyenMonNghiepVu = (string)cboChuyenMonNgVu.SelectedItem;
            }
            if (cboTinhTrang.SelectedIndex != -1)
            {
                CDVienDto.TinhTrang = (string)cboTinhTrang.SelectedItem;
            }

            if (cboNgaySinh.SelectedIndex > 0 && cboThangSinh.SelectedIndex > 0 && txtNamSinh.Text.Trim() != "")
            {
                string ngaySinh = (string)cboThangSinh.SelectedItem + "/" + (string)cboNgaySinh.SelectedItem + "/" + txtNamSinh.Text.Trim();
                CDVienDto.NgaySinh = Convert.ToDateTime(ngaySinh);
            }

            if (cboNgayVaoCD.SelectedIndex != 0 && cboThangVaoCD.SelectedIndex != 0 && txtNamVaoCD.Text.Trim() != "")
            {
                string ngayVaoCD = (string)cboThangVaoCD.SelectedItem + "/" + (string)cboNgayVaoCD.SelectedItem + "/" + txtNamVaoCD.Text.Trim();
                CDVienDto.NgayVaoCongDoan = Convert.ToDateTime(ngayVaoCD);
            }

            if (cboToCongDoan.SelectedIndex != -1)
            {
                ToCongDoanDTO ToCDDto = new ToCongDoanDTO();
                ToCDDto = (ToCongDoanDTO)cboToCongDoan.SelectedItem;
                CDVienDto.ToCongDoan = ToCDDto.MaToCD;
            }
            if (cboDanToc.SelectedIndex != -1)
            {
                DanTocDTO DanTocDto = new DanTocDTO();
                DanTocDto = (DanTocDTO)cboDanToc.SelectedItem;
                CDVienDto.DanToc = DanTocDto.MaDanToc;
            }

            if (cboTonGiao.SelectedIndex != -1)
            {
                TonGiaoDTO TonGiaoDto = new TonGiaoDTO();
                TonGiaoDto = (TonGiaoDTO)cboTonGiao.SelectedItem;
                CDVienDto.TonGiao = TonGiaoDto.MaTonGiao;
            }

            foreach (int chucvu in chklstChucVu.CheckedIndices)
            {
                ChucVuDTO cvDto = new ChucVuDTO();
                cvDto.MaChucVu = chucvu + 1;
                lstChucVu.Add(cvDto);
            }
            CDVienDto.ChucVu = lstChucVu;


            if (cboNgayCDen.SelectedIndex > 0 && cboThangCDen.SelectedIndex > 0 && txtNamCDen.Text.Trim() != "")
            {
                NgayCDenDto.MaCDV = CDVienDto.MaCDV;

                string ngayChuyenDen = (string)cboThangCDen.SelectedItem + "/" + (string)cboNgayCDen.SelectedItem + "/" + txtNamCDen.Text.Trim();
                NgayCDenDto.NgayChuyenDen = Convert.ToDateTime(ngayChuyenDen);

                NgayCDenDto.LyDoChuyenDen = txtLyDoChuyenDen.Text.Trim();
            }


            if (cboNgayCDi.SelectedIndex > 0 && cboThangCDi.SelectedIndex > 0 && txtNamCDi.Text.Trim() != "")
            {
                NgayCDiDto.MaCDV = CDVienDto.MaCDV;

                string ngayChuyenDi = (string)cboThangCDi.SelectedItem + "/" + (string)cboNgayCDi.SelectedItem + "/" + txtNamCDi.Text.Trim();
                NgayCDiDto.NgayChuyenDi = Convert.ToDateTime(ngayChuyenDi);

                NgayCDiDto.LyDoChuyenDi = txtLyDoChuyenDi.Text.Trim();
            }
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            string chuoi_loi = KiemTraHopLe();
            if (chuoi_loi == "")
            {
                CongDoanVienDTO CDVienDto = new CongDoanVienDTO();
                NgayChuyenDenDTO NgayCDenDto = new NgayChuyenDenDTO();
                NgayChuyenDiDTO NgayCDiDto = new NgayChuyenDiDTO();

                ThongTinCDV(CDVienDto, NgayCDenDto, NgayCDiDto);

                try
                {
                    CongDoanVienBUS.Them(CDVienDto, NgayCDenDto, NgayCDiDto);
                    MessageBox.Show("đã thêm");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                lstChucVu.Clear();
                ResetThongTinCDV();
            }
            else
            {
                MessageBox.Show(chuoi_loi, "Thông báo");
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            ResetThongTinCDV();
        }

        private void btnThemChucVu_Click(object sender, EventArgs e)
        {
            Form themChucVu = new frmThemChucVu();
            themChucVu.ShowDialog();

            ChucVuDTO cvDto = new ChucVuDTO();
            cvDto.TenChucVu = ((frmThemChucVu)themChucVu).ChucVu;
            if (cvDto.TenChucVu != "")
            {
                chklstChucVu.Items.Add(cvDto.TenChucVu);
                ChucVuBUS.Them(cvDto);
            }
        }

        private void ucThemCongDoanVien_Load(object sender, EventArgs e)
        {

            cboToCongDoan.DataSource = ToCongDoanBUS.LayDanhSach();
            cboToCongDoan.DisplayMember = "TenToCongDoan";
            cboToCongDoan.SelectedIndex = -1;


            cboDanToc.DataSource = DanTocBUS.LayDanhSach();
            cboDanToc.DisplayMember = "TenDanToc";
            cboDanToc.SelectedIndex = -1;

            cboTonGiao.DataSource = TonGiaoBUS.LayDanhSach();
            cboTonGiao.DisplayMember = "TenTonGiao";
            cboTonGiao.SelectedIndex = -1;

            List<ChucVuDTO> lstCVu;
            lstCVu = ChucVuBUS.LayDanhSach();
            for (int i = 0; i < lstCVu.Count; i++)
            {
                chklstChucVu.Items.Add(lstCVu[i].TenChucVu);
            }

            foreach (Control ctrl in this.Controls)
            {
                if (ctrl.Name.Contains("cboNgay"))
                {
                    ctrl.Text = "--Ngày--";
                }
                if (ctrl.Name.Contains("cboThang"))
                {
                    ctrl.Text = "--Tháng--";
                }
            }
        }
       
    }
}
